//
// Created by lfm on 2025/3/25.
//

//#include <stdio.h>
//
//
//
//#include <stdio.h>
//
//struct Clock
//{
//    int hour;
//    int minute;
//    int second;
//};
//typedef struct Clock CLOCK;
//void update();
//void Display(CLOCK *t);
//void Delay();
//void Update1(struct Clock *t); // 传入指针，修改结构体变量
//void Update2(struct Clock *t); // 传入指针，修改结构体变量
//int hour, minute, second;
//
//int main()
//{
//    long i;
//    hour = minute = second = 0;
//    CLOCK c = {0, 0, 0};  // 初始化结构体变量
//    for (int i = 0; i < 100000; i++)
//    {
//        Update1(&c);  // 调用 Update1 函数，传入结构体变量的地址
//        Display(&c);  // 调用 Display 函数，传入结构体变量的地址
//        Delay();
//
//    }
//
//    return 0;
//}
//void update()
//{
//    second++;
//    if (second == 60)
//    {
//        minute++;
//        second = 0;
//        if (minute == 60)
//        {
//            hour++;
//            minute = 0;
//        }
//        if (hour == 24)
//        {
//            hour = 0;
//        }
//    }
//}
////void Display()
////{
////    printf("%02d:%02d:%02d\r", hour, minute, second);
////}
////
//void Display(CLOCK *t)
//{
//    printf("%02d:%02d:%02d\r", t->hour, t->minute, t->second);
//    fflush(stdout);  // 刷新输出缓冲区
//}
//void Delay()
//{
//    long t;
//    for (t = 0; t < 50000000; t++)
//    {
//        ;
//    }
//}


//分析两段代码：解释是如何实现时钟更新操作的

void Update1(struct Clock *t)//传入指针，修改结构体变量
{
    static long m = 1;//静态变量，记录秒数
    t->hour = m / 3600;//计算小时
    t->minute = (m - 3600 * t->hour) / 60;//通过余数计算分钟
    t->second = m % 60;//计算秒数
    m++;//更新秒数
    if (t->hour == 24)//如果小时等于24，则小时归零
    {
        m = 1;
    }
}


void Update2(struct Clock *t)//传入指针，修改结构体变量
{
    static long m = 1;//静态变量，记录秒数
    t->second = m % 60;//计算秒数
    t->minute = (m / 60) & 60;//通过余数计算分钟
    t->hour = (m / 3600) & 24;//计算小时
    m++;//更新秒数
    if (t->hour == 24)//如果小时等于24，则小时归零
    {
        m = 1;
    }
}
